
import { createStore } from 'vuex'
import createPersistedState from 'vuex-persistedstate'

export default createStore({
  // 持久化
  plugins: [createPersistedState({
    reducer: (state) => {
      return {
        user: state.user,
        serach: state.serach

      }
    }

  })],
  state: {
    isHeaher: true, // 控制头部导航
    showConsider: false, // 控制是否执行取消确认
    user: {
      isUser: false,
      uid: '0',
      username: '',
      avatar: '',
      lable: ''
    }, // 登录后用户的信息
    articleSider: false, // 文章详情页中文章发布者的简介侧边栏
    serach: '', // 搜索内容
    userInfoId: null, // 文章详情页 获取用户的详情数据的id
    tabbar: false, // 控制底部导航栏的变量
    navbar: false, // 控制头部导航的变量
    menus: false,
    menuMini: [
      {
        name: '推荐',
        path: '/home/all'
      },
      {
        name: '萌宠',
        path: '/home/lactation'
      },
      {
        name: '科普',
        path: '/home/bird'
      },
      {
        name: '种草',
        path: '/home/crawl'
      },
      {
        name: '异宠',
        path: '/home/fish'
      }
    ], // 传递给二级迷你菜单的变量
    considerData: { }, // 确认框内容
    delArtcleState: false, // 删除文章之后改变的状太他的值无意义
    followOneState: false, // 我的关注页面 取消关注之后改变的状太他的值无意义
    removeFansState: false, // 移除粉丝之后改变的状太他的值无意义
    delVideoHistory: false, // 清空搜索历史之后改变的状太他的值无意义
    articleFabNum: 0, // 文章点赞未读消息数量
    articleComNum: 0, // 文章被评论的未读消息数量
    allUnread: 0 // 所有未读消息
  },
  getters: {
  },
  mutations: {
    // 更改全部消息
    // 更改全部传递的值是一个对象 type=reduce代表减少 type=add 表示增加
    // {type:reduce,data:1}
    updateAllUnread (state, val) {
      switch (val.type) {
        case 'reduce':
          if (state.allUnread > 0) {
            state.allUnread = state.allUnread - val.data
          } else {
            state.allUnread = 0
          }
          break
        case 'add':
          state.allUnread += val.data

          break
      }
    },
    // 更改点赞未读消息数量
    updateFabNum (state, val) {
      switch (val.type) {
        case 'reduce':
          if (state.articleFabNum > 0) {
            state.articleFabNum = state.articleFabNum - val.data
          } else {
            state.articleFabNum = 0
          }

          break
        case 'add':
          state.articleFabNum += val.data
          break
        case 'zreo':
          state.articleFabNum = 0
          break
      }
    },
    // 更改评论未读消息数量
    updateComNum (state, val) {
      switch (val.type) {
        case 'reduce':
          if (state.articleComNum > 0) {
            state.articleComNum = state.articleComNum - val.data
          } else {
            state.articleComNum = 0
          }

          break
        case 'add':
          state.articleComNum += val.data
          break
        case 'zreo':
          state.articleComNum = 0
          break
      }
    },
    // 删除文章之后触发的方法
    checkDelArtcle (state, val) {
      let num = 0
      num += val
      state.delArtcleState = num
    },
    // 我的关注页面
    // 取消关注之后触发的方法
    checkFollowOne (state, val) {
      state.followOneState = val
    },
    // 我的粉丝页面，移除粉丝
    removeFansTwo (state, val) {
      state.removeFansState = val
    },
    // 历史记录页面清空全部搜索历史
    delVideo (state, val) {
      state.delVideoHistory = val
    },
    // 更改确认框内容
    handerConsiderData (state, val) {
      state.considerData = val
    },
    // 判断是否登录页，继而显示隐藏头部导航栏
    isLogin (state, HeaherVal) {
      state.isHeaher = HeaherVal
    },
    // 判断 LoginVal 的值，显示隐藏登录
    meshowConsider (state, conVal) {
      state.showConsider = conVal
    },
    tokenLogin (state) {
      state.showLogin = true
    },
    // 登录的用户信息
    UserData (state, userVal) {
      state.user = userVal
    },
    // 修改用户更改用户头像
    UserDataAvatar (state, Val) {
      state.user.avatar = Val
    },
    // 判断文章详情页内的个人主页
    isArticleSider (state, val) {
      state.articleSider = val.state
      console.log('进入个人主页', val)
      state.userInfoId = val.uid
    },
    // 搜索数据
    handelSerach (state, val) {
      state.serach = val
    },
    // 更改Tabbar值的方法
    updateTabbar (state, val) {
      state.tabbar = val
      // console.log(val)
    },
    // 更改二级菜单
    updateMenu (state, val) {
      state.menuMini = val
    },
    // 更改navbar值的方法
    navbarHide (state, val) {
      state.navbar = val
      console.log(val + '11')
    },
    // 更改menumini值的方法
    menusHide (state, val) {
      state.menus = val
      console.log(val)
    }

  },
  actions: {
  },
  modules: {
  }
})
